import os.path
import sys

# 学生管理系统
# 需求说明
# 实现一个命令行版本的学生管理系统
# 功能:
# 新增学生
# 显示学生
# 查找学生
# 删除学生
# 存档到文件


#使用列表表示所有的学生
students=[]
def save():
    with open('d:/record.txt','w') as f:
        for s in students:
            f.write(f"{s['studentId']}\t{s['name']}\t{s['gender']}\t{s['className']}\n")
        print(f"存档成功，共存储了{len(students)}条记录")
def load():
    #如果读档不存在，则跳过读档环节
    if not os.path.exists('d:/record.txt'):
        return
    #先清空全局变量里面的数据
    global students
    students=[]
    with open('d:/record.txt','r', encoding='utf8') as f:
        for line in f:
            #去掉末尾的换行符
            line=line.strip()
            tokens=line.split('\t')
            if len(tokens)<4:
                print(f"文件格式有误！line={line}")
                continue
            student={
                'studentId':tokens[0],
                'name':tokens[1],
                'gender':tokens[2],
                'className':tokens[3]
            }
            students.append(student)
    print(f'读档成功，共读取了{len(students)}条记录！')


def menu():
    print('1、新增学生信息')
    print('2、显示所有学生信息')
    print('3、根据名字查找学生信息')
    print('4、删除学生信息')
    print('0、退出程序')
    choice=input('请输入您的选择:')
    return choice

def insert():
    print("【1、新增学生信息】")
    studentId=input('请输入学生的学号：')
    name=input('请输入学生的姓名：')
    gender=input('请输入学生的性别：')
    if gender not in ('男','女'):
        print("性别不符合要求，新增学生失败！")
        return
    className=input("请输入学生的班级：")
    #使用一个字典表示学生信息
    student={
        'studentId':studentId,
        'name':name,
        'gender':gender,
        'className':className
    }
    #把字典添加到学生列表中
    global students
    students.append(student)
    save()
    print('新增成功！')



def show():
    print("【2、显示所有学生信息】")
    for s in students:
        print(f"[{s['studentId']}\t{s['name']}\t{s['gender']}\t{s['className']}]")
    print(f"显示成功，共显示了{len(students)}条记录")


def find():
    print('【3、根据名字查找学生信息】')
    name=input('请输入要查找的同学姓名：')
    count=0
    for s in students:
        if name==s['name']:
            print(f"[{s['studentId']}\t{s['name']}\t{s['gender']}\t{s['className']}]")
            count+=1
    print(f"查找成功，共找到{count}条记录")


def delete():
    print("【4、删除学生信息】")
    studentId=input("请输入要删除的同学学号：")
    count=0
    for s in students:
        if studentId==s['studentId']:
            print(f"删除{s['name']}同学的信息了哦！")
            students.remove(s)
            count+=1
    save()
    print(f"删除成功，共删除{count}条记录！")



#1、创建入口函数
def main():
    print('=========================')
    print('====欢迎来到学生管理系统====')
    print('=========================')
    load()
    while True:
        choice=menu()
        if choice=='0':
            print('退出')
            sys.exit()
        elif choice=='1':
            insert()
        elif choice=='2':
            show()
        elif choice=='3':
            find()
        elif choice=='4':
            delete()
        else:
            print('您的输入有误，请重新输入！')

main()
